package com.glacier.common.core.service;

import com.glacier.common.core.domain.BaseEntity;
import com.glacier.common.core.domain.Page;

import java.io.Serializable;
import java.util.List;

/**
 * date 2022-12-27 09:28
 * 基础业务层
 *
 * @author glacier
 * @version 1.0.0
 */
public interface BaseService<T extends BaseEntity> {

    /**
     * 查询
     *
     * @param id
     * @return
     */
    <ID extends Serializable> T findById(ID id);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    Page<T> findPage(Page<T> page, T entity);

    /**
     * 查询数据列表
     *
     * @param entity
     * @return
     */
    List<T> findList(T entity);

    /**
     * 保存
     *
     * @param entity
     * @return
     */
    int save(T entity);

    /**
     * 删除
     *
     * @param entity
     * @return
     */
    int delete(T entity);

    /**
     * 删除
     *
     * @param idList
     * @param <ID>
     * @return
     */
    <ID extends Serializable> int batchDelete(List<ID> idList);
}
